debian部署observium

/ 4评 / 0

前几天在一台机器上部署了zabbix,体验了一番很不错,后来又看到了用SNMP来监控机器的软件observium,于是在另一台机器上尝试部署observium成功,这下几台机器互相监视监控,好像无限套娃一样好玩。
现在记录一下部署的记录。
全新安装的Debian系统执行:

apt 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

设置开机自动运行:

systemctl enable --now nginx mariadb php7.3-fpm

设置系统时区,同时php.ini的date.timezone时区也要设置为一样,随后重启php:

timedatectl set-timezone Asia/Shanghai
nano /etc/php/7.3/fpm/php.ini
nano /etc/php/7.3/cli/php.ini
systemctl restart php7.3-fpm

运行一下MariaDB安全配置向导:

mysql_secure_installation

配置MariaDB:

mysql -u root -p
<mysql root password>
mysql> CREATE DATABASE observium DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql> CREATE USER 'observium'@'localhost' identified by '为observium用户设置一个数据库密码';
mysql> GRANT ALL ON observium.* TO 'observium'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> exit;

下载observium社区版并解压:

cd /opt
wget http://www.observium.org/observium-community-latest.tar.gz
tar zxvf observium-community-latest.tar.gz
cd observium

复制配置文件模板并编辑:

cp config.php.default config.php
nano config.php

编辑以下字段:

// Database config ---  This MUST be configured
$config['db_extension'] = 'mysqli';
$config['db_host']      = 'localhost';
$config['db_user']      = 'observium';
$config['db_pass']      = '$OBSERVIUM用户的密码$';
$config['db_name']      = 'observium';

设置数据库并插入默认模式:

./discovery.php -u

创建logs和rrd文件夹:

mkdir logs rrd

创建管理员用户:

./adduser.php <username> <password> 10

并更改observium的文件夹权限:

cd ..
chown -R www-data:www-data observium

设置计划任务:

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

由于Debian决定不再随发行版提供SNMP MIBs,因此要修改/etc/snmp/snmp.conf,将mibs :改为:

mibs : /opt/observium/mibs/rfc:/opt/observium/mibs/net-snmp

现在先把自己监视起来,在安装observium的这台机器上执行:

apt install snmpd

备份原始的snmpd文件,清空原始内容:

cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak
echo > /etc/snmp/snmpd.conf
nano /etc/snmp/snmpd.conf

写入以下内容:

agentAddress udp:127.0.0.1:161
sysLocation USA BuyVM
sysContact gotototo <abc@gmail.com>
createUser gotototo MD5 ErH#8&buZHe&xBw5wYRn AES 8sK@T!Nu$66pB2TdBEoE
rouser gotototo priv

重启snmpd服务:

systemctl restrat snmpd

现在新建一个站点:

cd /etc/nginx/conf.d
nano observium.gotototo.com.conf

填写下列内容:

server {
  listen 80;
  listen [::]:80;
  server_name observium.gotototo.com;
  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;
  }
}

检测nginx配置,并启动看看效果:

nginx -t
nginx -s reload

如果可以看到网站了,那么再来安装acme准备签发一个证书:

curl  https://get.acme.sh | sh

我的域名停靠在cloudflare管理,因此要先获取cloudflare的api,过程不表了,跳过说获取到api之后的操作步骤:

mkdir /etc/nginx/ssl

~/.acme.sh/acme.sh --set-default-ca --server letsencrypt #acme现在的默认证书服务商改为了zerossl,但我还是觉得之前的letsencrypt好用,所以这里改一下默认的证书提供商

export CF_Key="CLOUDFLARE_API"

export CF_Email="USER@gmail.com"

~/.acme.sh/acme.sh --issue --dns dns_cf -d observium.gotototo.com

~/.acme.sh/acme.sh --install-cert -d observium.gotototo.com --cert-file /etc/nginx/ssl/observium.gotototo.com.cer --key-file /etc/nginx/ssl/observium.gotototo.com.key --fullchain-file /etc/nginx/ssl/fullchain.cer

openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048

经过上面的步骤后,已经申请到了域名的证书,并且将其安装到了/etc/nginx/ssl目录下。
现在要修改一下observium.gotototo.com.conf文件,把ssl的配置信息写进去:

nano /etc/nginx/conf.d/observium.gotototo.com.conf

下面是我的配置文件参考:

# HTTP redirect
server {
  listen 80;
  listen [::]:80;
  server_name observium.gotototo.com;
  location / {
    return 301 https://observium.gotototo.com$request_uri;
  }
}
# HTTPS
server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  server_name observium.gotototo.com;
  root /opt/observium/html;

  # index.php
  index index.php index.html;

  # SSL
  ssl_certificate /etc/nginx/ssl/fullchain.cer;
  ssl_certificate_key /etc/nginx/ssl/observium.gotototo.com.key;
  ssl_trusted_certificate /etc/nginx/ssl/observium.gotototo.com.cer;
  ssl_dhparam /etc/nginx/ssl/dhparam.pem;
  ssl_session_timeout 5m;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
  ssl_prefer_server_ciphers on;
  ssl_ciphers "TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
  ssl_session_cache builtin:1000 shared:SSL:10m;

  # logging
  access_log /var/log/nginx/observium.gotototo.com.log;

  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;
  }
}

测试配置文件有没有问题的话,可以重启nginx开始跑服务了:

nginx -t
nginx -s reload

打开网站,在Devices,Add Device处先添加自己进去,snmp协议V3,填好用户名密码这些提交,顺利的话过几分钟就可以看得到自己了。
放几张水图:
observium1
observium2
observium3
observium4

用来部署observium的机器是一台Anynode的256MB小鸡,内存这么小,应该是nat机器吧?结果被我加了swap之后一直当主力机来用(前些年的时候),对了,Anynode的机器还是我买的第一台VPS呢,后来Anynode的机器经常出问题,即使他们给我换了机房后有一段时间严重到装完系统就不能用,后台显示机器在线,但是ping不通。来来往往ticket也发了不少了,后来不知道他们的技术给我做了什么处理之后,也确实没再出问题了,但是这种的情况下我是不敢把Anynode的机器作为主力机来用了。在来来往往的邮件过程中,我也曾经建议Anynode考虑退款给我(刚刚续费2年没多久),但别人没有回应我的请求,后来他给我处理好后也确实稳定多了,没再出过问题。
如果我当时在邮件里要求给我增加一点ram的话,说不定Anynode也会答应的。
再后来,Anynode宣布所有的资产和用户转移给BuyVM,这下我们这些持有Anynode的用户可就高兴了,因为BuyVM所有的机器都是不限流量的套餐呀。可惜,Anynode去年的8刀一年,512MB内存的机器我没有买,有点后悔了,我手里只有两年前那款20刀两年,256MB内存的机器。
以前常常听人说起传家宝,这下我手里也有传家宝了。

参考资料

observium官方文档
荒岛-Observium:基于SNMP的网络监控平台

4 responses to “debian部署observium”

  1. Winston says:

    up主您好,我刚接触wordpress,琳琅满目的主题都花里胡哨的没有一个适合我,看您这个主题就很好,也想搞一个跟你一样的。能否指点我一下。我的电话18009637266,wx同号,感激!

    • weeper says:

      @Winston 我不是UP主,我只是个懒散的博主。
      我这个主题下方就有Theme作者的网站链接。
      https://biji.io/
      他在Theme介绍里写了怎么采用列表的形式应用主题,我就是按照他的说明改了一下。

      • Winston says:

        @weeper 已基本搞定主页时间轴样式,感谢回复。另外网盘和导航您应该是另外做了2个网站链接过去的,请问有源码可以提供给我吗?

        • weeper says:

          @Winston 什么源码?网盘和导航的么?
          网盘是onindex挂载的OneDrive。
          导航是onenav。

          现在忙于工作,完全没时间打理blog了。
          网盘很快就要到期,onenav也懒得再弄,链接准备移除了。

          抱歉不能帮你更多。

Leave a Reply

Your email address will not be published. Required fields are marked *