前几天在一台机器上部署了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,填好用户名密码这些提交,顺利的话过几分钟就可以看得到自己了。
放几张水图:
用来部署observium的机器是一台Anynode的256MB小鸡,内存这么小,应该是nat机器吧?结果被我加了swap之后一直当主力机来用(前些年的时候),对了,Anynode的机器还是我买的第一台VPS呢,后来Anynode的机器经常出问题,即使他们给我换了机房后有一段时间严重到装完系统就不能用,后台显示机器在线,但是ping不通。来来往往ticket也发了不少了,后来不知道他们的技术给我做了什么处理之后,也确实没再出问题了,但是这种的情况下我是不敢把Anynode的机器作为主力机来用了。在来来往往的邮件过程中,我也曾经建议Anynode考虑退款给我(刚刚续费2年没多久),但别人没有回应我的请求,后来他给我处理好后也确实稳定多了,没再出过问题。
如果我当时在邮件里要求给我增加一点ram的话,说不定Anynode也会答应的。
再后来,Anynode宣布所有的资产和用户转移给BuyVM,这下我们这些持有Anynode的用户可就高兴了,因为BuyVM所有的机器都是不限流量的套餐呀。可惜,Anynode去年的8刀一年,512MB内存的机器我没有买,有点后悔了,我手里只有两年前那款20刀两年,256MB内存的机器。
以前常常听人说起传家宝,这下我手里也有传家宝了。
up主您好,我刚接触wordpress,琳琅满目的主题都花里胡哨的没有一个适合我,看您这个主题就很好,也想搞一个跟你一样的。能否指点我一下。我的电话18009637266,wx同号,感激!
@Winston 我不是UP主,我只是个懒散的博主。
我这个主题下方就有Theme作者的网站链接。
https://biji.io/
他在Theme介绍里写了怎么采用列表的形式应用主题,我就是按照他的说明改了一下。
@weeper 已基本搞定主页时间轴样式,感谢回复。另外网盘和导航您应该是另外做了2个网站链接过去的,请问有源码可以提供给我吗?
@Winston 什么源码?网盘和导航的么?
网盘是onindex挂载的OneDrive。
导航是onenav。
现在忙于工作,完全没时间打理blog了。
网盘很快就要到期,onenav也懒得再弄,链接准备移除了。
抱歉不能帮你更多。