Observium是一个用PHP写的基于SNMP的网络监控平台,可以监控Linux/Windows等众多设备。
你就理解为这东西可以监控你的小鸡就好了,并且被控端只需要安装一个SNMP服务即可,配置起来很方便。
下面是一些预览,机器列表:
机器概览:
一些详细的信息:
以下步骤在Debian10上完成。更新软件源:
apt -y update
安装需要用到的软件包:
apt -y install php7.3-fpm php7.3-cli php7.3-mysql php7.3-gd php7.3-json php-pear snmp fping mariadb-server mariadb-client python-mysqldb rrdtool subversion whois mtr-tiny ipmitool graphviz imagemagick nginx python-certbot-nginx
我看到官方的文档没具体说到底要不要php-mcrypt这个扩展,为了避免后面出现幺蛾子问题,这里也装一下(可能不需要这个)
apt -y install build-essential php7.3-dev libmcrypt-dev pecl channel-update pecl.php.net pecl install mcrypt-1.0.4 echo "extension=mcrypt.so" > /etc/php/7.3/mods-available/mcrypt.ini
设置开机自启:
systemctl enable --now nginx mariadb php7.3-fpm
rrdtool绘图是根据系统时区来的,如果你人在厉害国的话,建议设置一下系统时区,这里我设置为东八区:
timedatectl set-timezone Asia/Shanghai
PHP时区也需要设置,编辑如下两个php.ini文件:
nano /etc/php/7.3/fpm/php.ini nano /etc/php/7.3/cli/php.ini
找到如下位置去掉前面的注释,改为和系统时区一致的东八区:
date.timezone = Asia/Shanghai
重启php-fpm使更改生效:
systemctl restart php7.3-fpm
接下来初始化mariadb:
mysql_secure_installation
登录到mysql:
mysql -u root -p
创建数据库/用户/授权:
CREATE DATABASE observium CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE USER 'observium'@'localhost' IDENTIFIED BY '设置你的数据库用户密码'; GRANT ALL PRIVILEGES ON observium.* TO 'observium'@'localhost'; FLUSH PRIVILEGES; exit
下载解压observium社区版压缩包:
cd /opt wget http://www.observium.org/observium-community-latest.tar.gz tar -xzvf observium-community-latest.tar.gz cd observium
复制一份配置文件并编辑:
cp config.php.default config.php nano config.php
修改mysql数据库连接信息:
// Database config --- This MUST be configured $config['db_extension'] = 'mysqli'; $config['db_host'] = 'localhost'; $config['db_user'] = 'observium'; $config['db_pass'] = 'password'; $config['db_name'] = 'observium';
初始化数据表:
./discovery.php -u
创建两个需要用到的目录:
mkdir logs rrd
设置正确的目录和文件权限:
chown -R www-data:www-data /opt/observium
创建管理员账号,后面的10表示账号等级,10是最高也就是管理员的意思:
./adduser.php imlala password 10
添加计划任务:
crontab -e
写入如下配置:
33 */6 * * * /opt/observium/discovery.php -h all >> /dev/null 2>&1 */5 * * * * /opt/observium/discovery.php -h new >> /dev/null 2>&1 */5 * * * * /opt/observium/poller-wrapper.py >> /dev/null 2>&1 13 5 * * * /opt/observium/housekeeping.php -ysel >> /dev/null 2>&1 47 4 * * * /opt/observium/housekeeping.php -yrptb >> /dev/null 2>&1
新建一个nginx站点配置文件:
nano /etc/nginx/conf.d/observium.conf
写入如下配置:
server { listen 80; server_name observium.imlala.best; root /opt/observium/html; index index.php; location / { try_files $uri $uri/ /index.php; } location ~ /.(?!well-known).* { deny all; } location ~ .php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.3-fpm.sock; } }
签一个ssl证书:
certbot --nginx
打开你的域名访问,可以看到登录界面的话,使用之前你创建的管理员账号登录:
接下来是SNMP相关的配置。
各个系统安装配置SNMP的方式略有不同,但基本都一样,这里我只介绍一下Debian10的。
注意这个SNMP的配置一定要配置好,否则可能会导致安全问题,比如被人利用来做UDP放大的DDoS攻击。
首先安装snmpd:
apt -y install snmpd
安装之后为安全起见先停止运行:
systemctl stop snmpd
同时设置一下开机自启:
systemctl enable snmpd
接下来备份一下配置文件:
cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak
把默认的配置文件清空:
echo > /etc/snmp/snmpd.conf
编辑默认的配置文件:
nano /etc/snmp/snmpd.conf
写入如下配置:
agentAddress udp:161 sysLocation Japan Tokyo sysContact imlalacreateUser imlala MD5 password AES privpassword rouser imlala priv
关于SNMP的配置这里要详细的说一下,SNMP目前有3个协议版本,一个v1还有一个v2c,以及现在最安全的v3。
上面配置的协议是使用的v3,并且验证等级是authpriv。
在createUser这一行,其中imlala是用户名,password是验证密码,privpassword是加密密码。这些密码一定要改一个高强度的。
rouser是只读用户,这个权限足够了,如果不是必要不要配置rwuser。
确认配置无误后,重新启动snmpd服务:
systemctl start snmpd
现在回到Observium的WEB界面添加设备,单击Devices-Adddevice,按如下图所示来配置:
一旦设备添加成功,等待5分钟,也就是之前你设置的cron计划任务执行,observium的web界面就可以看到监控数据了:
如果你需要立即发现设备并绘制图表的话,在observium的根目录下执行如下命令即可:
./discovery.php -h all ./poller.php -h all
不过我建议还是等5分钟让系统自动收集数据,正好也可以测试下crontab的配置是否正常。
最新评论
5211314
能不能教我 一点不会