原文地址:https://lala.im/7620.html,請支持原作者!該處僅作轉載。
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 imlala <[email protected]>
createUser 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的配置是否正常。