nezha/docs/UserGuide_en.md
2022-04-29 19:10:49 +01:00

14 KiB
Raw Blame History

User Guide

install script

Recommended configuration Preparation before installation Two domainsone can access CDN as Public Accessfor example (status.nai.ba)Another one resolves to the panel server as Agent connect Dashboard usecan't access CDN Direct exposure panel host IPfor exampleip-to-dashboard.nai.ba

curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install_en.sh  -o nezha.sh && chmod +x nezha.sh
sudo ./nezha.sh

* use WatchTower Panels can be updated automaticallyWindows terminal can use nssm configure autostart

Windows -A key installation Agent please use Powershell admin rights

set-ExecutionPolicy RemoteSigned;Invoke-WebRequest https://raw.githubusercontent.com/naiba/nezha/master/script/install.ps1 -OutFile C:\install.ps1;powershell.exe C:\install.ps1 dashboard_host:grpc_port secret

In case of confirmation「Implement policy changes」please choose Y

Agent customize

Custom monitoring of network cards and hard disk partitions

implement /opt/nezha/agent/nezha-agent --edit-agent-config to select custom NICs and partitionsthen reboot just agent

Operating parameters

by executing ./nezha-agent --help View supported parametersIf you use one-click scriptingcan be edited /etc/systemd/system/nezha-agent.serviceexist ExecStart= At the end of this line add

  • --report-delay System information reporting intervalThe default is 1 Secondcan be set to 3 to further reduce agent End-system resource usageConfiguration interval 1-4
  • --skip-conn Do not monitor the number of connectionsif Airport/connection-intensive machines High CPU usageRecommended settings
  • --skip-procs Do not monitor the number of processescan also be reduced agent occupy
  • --disable-auto-update prohibit auto update Agentsafety features
  • --disable-force-update prohibit Force update Agentsafety features
  • --disable-command-execute prohibited in Agent Execute scheduled tasks on the machine、Open online terminalsafety features
  • --tls enable SSL/TLS encryptionuse nginx reverse proxy Agent of grpc connectand nginx turn on SSL/TLS TimeThis configuration needs to be enabled

Function Description

Scheduled Tasksbackup script、service restartand other periodic operation and maintenance tasks。

Use this feature to periodically combine restic、rclone back up the serverOr periodically restart some service to reset the network connection。

Alarm notificationReal-time monitoring of load, CPU, memory, hard disk, bandwidth, traffic, monthly traffic, number of processes, and number of connections。

Flexible notification methods

#NEZHA# is the panel message placeholderThe panel will automatically replace the placeholder with the actual message when the notification is triggered

Body content isJSON formattedwhen the request type is FORM Timevalue is key:value formvalue Placeholders can be placed insideAutomatically replace when notified。when the request type is JSON 时 It will only be submitted directly to theURL

URL Placeholders can also be placed insideSimple string replacement is done when requested。

Refer to the example belowvery flexible。

  1. Add notification method

    • telegram Example @haitau contribute

      • nametelegram Robot message notification
      • URLhttps://api.telegram.org/botXXXXXX/sendMessage?chat_id=YYYYYY&text=#NEZHA#
      • request method: GET
      • request type: default
      • Body: null
      • URL Parameter acquisition instructionsbotXXXXXX Neutral XXXXXX is in telegram Follow the official @Botfather enter/newbot Create new botbotTimewill provide tokenin prompt Use this token to access the HTTP API:next linehere 'bot' Three letters are indispensable。create bot 后need first telegram neutral BOT have a conversationJust send a messagethen available API Send a message。YYYYYY Yes telegram user's number ID。with the robot@userinfobot Dialogue is available。
  2. Add an offline alarm

    • nameOffline notifications
    • rule[{"Type":"offline","Duration":10}]
    • enable
  3. add a monitor CPU continued 10s Exceed 50% and memory persistent 20s Occupied less than 20% the alarm

    • nameCPU+RAM
    • rule[{"Type":"cpu","Min":0,"Max":50,"Duration":10},{"Type":"memory","Min":20,"Max":0,"Duration":20}]
    • enable

Description of alarm rules

basic rules
  • type
    • cpumemoryswapdisk
    • net_in_speed Inbound speed、net_out_speed Outbound speed、net_all_speed two-way speed、transfer_in Inbound traffic、transfer_out Outbound traffic、transfer_all bidirectional traffic
    • offline Offline monitoring
    • load1load5load15 load
    • process_count number of processes Currently fetching threads takes up too many resourcesTemporarily not supported
    • tcp_conn_countudp_conn_count number of connections
  • durationduration in secondsSampling records in seconds 30% The above trigger threshold will only alarmAnti-Data Pin
  • min/max
    • flow、Network speed class value as bytes1KB=1024B1MB = 1024*1024B
    • 内存、hard disk、CPU occupancy percentage
    • Offline monitoring without setup
  • cover [{"type":"offline","duration":10, "cover":0, "ignore":{"5": true}}]
    • 0 monitor allpass ignore ignore specific server
    • 1 ignore allpass ignore Monitor specific servers
  • ignore: {"1": true, "2":false} specific servermatch cover use
specialArbitrary cycle flow alarm

Can be used as monthly flow alarm

  • type
    • transfer_in_cycle Inbound traffic during the period
    • transfer_out_cycle Outbound traffic during the period
    • transfer_all_cycle Bidirectional flow in cycles and
  • cycle_start Fiscal Period Start DateCan be the start date of your machine billing cycleRFC3339 Time formatFor example, Beijing time is2022-01-11T08:00:00.00+08:00
  • cycle_interval How many cycle units every (for example, if the cycle unit is days, the value is 7, which means that the statistics will be counted every 7 days
  • cycle_unit Statistical period unit, default hour, optional(hour, day, week, month, year)
  • min/max、cover、ignore Refer to Basic Rules Configuration
  • Example: ID for 3 the machineignore inside the definitionof monthly 15 outbound monthly traffic billed 1T Call the police [{"type":"transfer_out_cycle","max":1000000000000,"cycle_start":"2022-01-11T08:00:00.00+08:00","cycle_interval":1,"cycle_unit":"month","cover":1,"ignore":{"3":true}}] 7QKaUx.md.png
service monitoringHTTP、SSL certificate、ping、TCP port etc。

Enter /monitor Click to create a new monitor on the pageInstructions are below the form。

custom codeChange the logo、change color、Add statistical code, etc.。

Effective only on the visitor's home page.

  • Default theme changing progress bar color example

    <style>
    .ui.fine.progress> .bar {
        background-color: pink !important;
    }
    </style>
    
  • DayNight Example of theme changing progress bar color, modifying footerfrom @hyt-allen-xu

    <style>
    .ui.fine.progress> .progress-bar {
      background-color: #00a7d0 !important;
    }
    </style>
    <script>
    window.onload = function(){
    var footer=document.querySelector("div.footer-container")
    footer.innerHTML="©2021 "your name" & Powered by "your name"
    footer.style.visibility="visible"
    }
    </script>
    
  • Default theme modification LOGO、Modify footer examplefrom @iLay1678

    <style>
    .right.menu>a{
    visibility: hidden;
    }
    .footer .is-size-7{
    visibility: hidden;
    }
    .item img{
    visibility: hidden;
    }
    </style>
    <script>
    window.onload = function(){
    var avatar=document.querySelector(".item img")
    var footer=document.querySelector("div.is-size-7")
    footer.innerHTML="Powered by your name"
    footer.style.visibility="visible"
    avatar.src="your square logo address"
    avatar.style.visibility="visible"
    }
    </script>
    
  • hotaru Theme change background image example

    <style>
    .hotaru-cover {
       background: url(https://s3.ax1x.com/2020/12/08/DzHv6A.jpg) center;
    }
    </style>
    

common problem

How to perform data migration、Backup and restore
  1. First use one-click script stop panel
  2. Pack /opt/nezha folder, to the same location in the new environment
  3. Use one-click script Launchpad
Agent Start/Go Online Problem Self-Check Process
  1. direct execution /opt/nezha/agent/nezha-agent -s Panel IP or non-CDN domain name:Panel RPC port -p Agent key -d Check if the log is DNS、Poor network causes timeouttimeout question。
  2. nc -v domain name/IP Panel RPC port or telnet domain name/IP Panel RPC port Check if it is a network problemCheck local and panel server inbound and outbound firewallsIf the single machine cannot judge, you can use the https://port.ping.pe/ Provided port inspection tool for detection。
  3. If the above steps detect normalAgent normal onlinetry to close SELinuxhow to close SELinux
how to make Legacy OpenWRT/LEDE self-start

refer to this project: https://github.com/Erope/openwrt_nezha

how to make New version of OpenWRT self-startvia @esdes

first in release Download the corresponding binary decompression zip After the package is placed in /rootThen chmod +x /root/nezha-agent give execute permissionthen create /etc/init.d/nezha-service

#!/bin/sh /etc/rc.common

START=99
USE_PROCD=1

start_service() {
 procd_open_instance
 procd_set_param command /root/nezha-agent -s Panel URL:receive port -p unique key -d
 procd_set_param respawn
 procd_close_instance
}

stop_service() {
    killall nezha-agent
}

restart() {
 stop
 sleep 2
 start
}

give execute permission chmod +x /etc/init.d/nezha-service then start the service /etc/init.d/nezha-service enable && /etc/init.d/nezha-service start

Live channel disconnected/Online terminal connection failed

When using a reverse proxy, you need to target /ws,/terminal path WebSocket Specially configured to support real-time server status updates and WebSSH

  • Nginx(Aapanel/Pagoda)At your nginx Add the following code to the configuration file

    server{
    
        #some original configuration
        #server_name blablabla...
    
        location ~ ^/(ws|terminal/.+)$  {
            proxy_pass http://ip:site access port;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
            proxy_set_header Host $host;
        }
    
        #others location blablabla...
    }
    

    If not a pagodastill in server{} add this paragraph

    location / {
      proxy_pass http://ip:site access port;
      proxy_set_header Host $host;
    }
    
  • CaddyServer v1v2 No special configuration required

    proxy /ws http://ip:8008 {
        websocket
    }
    proxy /terminal/* http://ip:8008 {
        websocket
    }
    
reverse proxy gRPC portsupport Cloudflare CDN use Nginx or Caddy reverse proxy gRPC
  • Nginx configure
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name ip-to-dashboard.nai.ba; # yours Agent connect Dashboard's domain name

    ssl_certificate          /data/letsencrypt/fullchain.pem; # your domain certificate path
    ssl_certificate_key      /data/letsencrypt/key.pem;       # Your domain name private key path

    underscores_in_headers on;

    location / {
        grpc_read_timeout 300s;
        grpc_send_timeout 300s;
        grpc_pass grpc://localhost:5555;
    }
}
  • Caddy configure
ip-to-dashboard.nai.ba:443 { # yours Agent connect Dashboard's domain name
    reverse_proxy {
        to localhost:5555
        transport http {
            versions h2c 2
        }
    }
}

Dashboard Panel side configuration

  • First log in to the panel to enter the management background Open the settings pageexist Panel server domain name that is not connected to CDN/IP Fill in the previous step in Nginx or Caddy domain name configured in for example ip-to-dashboard.nai.ba and save。
  • then in the panel serverOpen /opt/nezha/dashboard/data/config.yaml 文件,将 proxygrpcport change into Nginx or Caddy listening portor as set in the previous step 443 because we are Nginx or Caddy turned on SSL/TLSSo it is necessary to tls Set as true Restart the panel after modification is complete。

Agent end configuration

  • Login panel management backgroundCopy the one-click install commandExecute the one-click installation command on the corresponding server to reinstall agent end。

turn on Cloudflare CDNoptional

according to Cloudflare gRPC requirementsgRPC Service must listen 443 port and must support TLS and HTTP/2。 So if you need to turn it on CDNmust be configured Nginx or Caddy reverse proxy gRPC use when 443 portand configure the certificateCaddy Will automatically apply and configure the certificate

  • Log in CloudflareChoose a domain name to use。Open The internet option will gRPC switch onOpen DNS optionsturn up Nginx or Caddy Anti-generation gRPC The resolution record of the configured domain nameOpen Orange Cloud Enable CDN。