2019/05/31

之前有發過一篇cacti預設畫超過100M圖有問題的處理方法
補一下新版介面
首先找出要修正的device





找到要設定的介面後修正如下圖的值 必須每個interface都要設定
找到後點畫面右上角的data source list




2019/05/29

繼續昨天的問題
目前發現用 grafana 如果只是單純的進elasticsearch去拿筆數出來畫圖
不會有什麼問題
可是如果還要排序 加總 等一些運算
感覺會在ES上運算完再傳回
可是因為grafana需要這些資料來繪圖
所以會一直跟ES要
如果ES不夠強壯
就無法應付如此頻繁的request
結論就是

把需要的資料定時撈回來 在本地的几器上處理完再放到本地的DB上
這樣grafana拿資料比較快 也不會增加ES的loading

2019/05/28

昨天因為要測試 grafana 而到graylog定時撈一些資料
不知道是不是因為量太大
今天graylog出現了一些異常
log如下

2019-05-28T14:46:52.443+08:00 ERROR [IndexRotationThread] Couldn't point deflector to a new index
org.graylog2.indexer.ElasticsearchException: Couldn't collect indices for alias graylog_deflector

[parent] Data too large, data for [<http_request>] would be [727227463/693.5mb], which is larger than the limit of [727213670/693.5mb], usages [request=0/0b, fielddata=0/0b, in_flight_requests=441445/431kb, accounting=726769578/693.1mb]

查到的結果都說是因為 cache的問題
可是依說明修改參數後
並沒有解決問題
我在想是不是indices可能出現問題了
rebuild也沒用
最後rotate後 把之前最近的二個indices close
觀察到目前為止都正常
留下記錄
做為參考

https://blog.csdn.net/hereiskxm/article/details/46744985

2019/05/24

一直以來都有碰到windows無法更新的問題
網路上一堆文章說停掉windows update server
然後再把C:\Windows\SoftwareDistribution 刪除的方法根本沒用

朋友教了一個方法

使用二個工具來解決
首先使用 DISM++
到空間回收
除了以下圖片的選項之外其他全選









選完後點清理

接下來使用  pchunter 刪除 C:\$Windows~BT



















最後再使用DISM++ 的更新管理
把update裝上去

2019/05/23

之前發過一篇有關如何在graylog利用ip在地圖上顯示的方法
本來是有使用
但自從上次nas 掛二個HD GG後
graylog重裝 這個功能就沒有再加上去了
直到最近有人提到說想看類似的圖
才想說再起起來
沒想到由於目前收的log筆數太多
功能起起來後 因為會去解析所有進到graylog的ip
系統資源無法負荷
所以只好關掉再想別的辦法
剛好最近玩的grafana有個worldmap pannel 的plugin
想說來試看看
這個plugin支援滿多的datasource

Graphite
InfluxDB
OpenTSDB
Prometheus
MySQL
Postgres
MSSQL
Elasticsearch

想說就拿influxDB來用

首先每五分鐘到graylog取回這段時間被block的ip
取回後
再利用 geoiplookup 來把ip的地理位置取出來
在centos 7 上安裝

yum install GeoIP

裝好後就可以使用了
語法是
geoiplookup 8.8.8.8

GeoIP Country Edition: US, United States

我只想用國家來畫 所以以上資的資料就夠了
有二個原因
因為worldmap panel 直接支援用國碼來畫圖
再來就是如果要用座標來畫 一天的資料可能就會把HD撐爆了

接下來就是把以上取得的資料塞進influxdb
以下是程式碼

/bin/curl -u username:passwd 'http://10.10.10.10:9000/api/search/universal/keyword/export?query=source%3A10.10.10.20&keyword=last%205%20mins&batch_size=500&fields=message' > /tmp/5min_ipp
cat /tmp/5min_ipp |grep '\[' |awk '{print $2}'|cut -d ']' -f 1|cut -d '[' -f 2 > /tmp/5min_ip

rm /tmp/country

for i in `cat /tmp/5min_ip`
do
        country=`/bin/geoiplookup $i|awk '{print $4}'|cut -c 1-2`
        echo $country >> /tmp/country
done

cat /tmp/country|sort|uniq -c > /tmp/attack_data

while read line
do
#       echo $line
        /bin/influx -database "attacker" -execute "insert attack,name=`echo $line|awk '{print $2}'` value=`echo $line|awk '{print $1}'`"
done < /tmp/attack_data

attack 這個 Measurement只放了二個資料
國碼 這五分鐘的攻擊次數
如下

1558574202593759971 SG   9
1558574203886084275 SK   1
1558574205156245342 TH   3
1558574206520742362 TR   4

最後就是畫圖了 這也是搞最久的地方

設定influxdb 的datasource



























在dashbord上加上world map panel

再來設定相關資料
















紅色框一定要依据定義的field設對 不然圖就是出不來













location data 選擇country 以符合上面說明資料

如果設定正常 就會看到以下的圖了


















以上的程式在每五分鐘執行時會使用大量的cpu資源
請特別注意
另外可能要依据需求定時去清理influxdb的資料 以免占用太多HD空間


https://blog.csdn.net/Py_Wang/article/details/79186634


2019/05/22

因為最近玩grafana的關係
順便了解一下influxDB
安裝在centos 7 上很方便
把yum源加上去
直接yum install -y influxdb就可以了
不要忘記設定開几啟動

sudo systemctl enable influxdb

再來就是建user
開db

influxdb是時序性的DB
跟一般DB對比如下

Influxdb           SQL
Database          Database
Measurement Table
Points         Data Rows

再來加入資料

Influxdb的measuremet不需要先建立,也不用設定資料欄位,
直接 insert就可以了
INSERT時不要加任何的單引號或雙引號
 insert command有四個重要元素

measurement

tag <tag1-key>=<tag1-value>,<tag2-key>=<tag2-value> 如果有複數個tag時以逗點隔離

field <field1-key>=field1-value>,<field2-key>=field2-value>如果有複數個field時以逗點隔離

time 格式為timestamp,單位us,可以不加。(influxdb會自動加上server時間)

要特別注意的是insert時一定要加 measurement
time如果不指定系統會自動加上去

範例如下

INSERT test_measure,host=abc,cpu=intel volume=55

tag 跟 field 不一定要同時存在

再來談update 跟 delete

fluxbd設計之初就認為資料只會寫入而不會異動
因此沒有update相關指令

delete 的說明如下
只能清除整個 measurement
或以時間為基準來清除資料

DELETE FROM abc
DELETE FROM abc WHERE time < '2000-01-01T00:00:00Z'
DELETE WHERE time < '2000-01-01T00:00:00Z'

其他相關的指令請參考以下文件或直接google




在bash shell中常常會使用檔案來跑迴圈
語法如下

for i in `cat file`
do
    echo $i
done

但是如果檔案裡有空格
就無法一行行讀取
因為shell會把用空格格開的文字都視為是一個變數

此時就要使用另一個方法

while read line
do
    echo $line
done < /tmp/file

就會以行來讀取 不會再因為空白而切開


2019/05/21

一直以來為了減少graylog的loading
都會用shell批次把舊的index close
但今天跑完卻出現












把nas snapshot倒回去
再跑一次
還是一樣
這就有點怪了
於是手動一個一個關
然後關一個試一次
果然關到其中某一個後又出現
然後open又好了
看來也沒辦法了
只能留著
等到時間倒自然清掉吧

今天來講一下如何設定 grafana的 email alert
由於使用rpm安裝好後並沒有設定寄信的功能
所以首先要修改
/etc/grafana/grafana.ini
如下

[smtp] 
enabled = true
host = 1.2.3.4:25  改為smtp server ip
from_address = grafana@abc.com
from_name = Grafana

改好重啟
systemctl restart grafana-server

接下來在網頁介面上設定 Notification channels




































設定完成後按下 save test 檢查是否設定成功
再來就是在panel 上設定
點下panel edit 後
再點畫面左下方 alert
設定相關的值


設定完成後可以點 右上 test rule
如果沒問題
就可以在設定的情況收到通知了

2019/05/20

這几天開始找時間玩 grafana
做個記錄

安裝基本上沒太大問題
這次是裝在centos 7上
從官網下載rpm回來後
rpm -Uhv --test 出現少了几個package
就補一補
很快就裝好了

由於 grafana 支援相當多的datasource 目前先找了二個來試試
首先是graylog裡的elasticsearch 
如果是裝graylog 3的版本
預設elasticsearch只listen在 127.0.0.1 應該是為了安全性的問題
要開放出來

修改 /etc/elasticsearch/elasticsearch.yml
加上
network.host: 0.0.0.0

改好後
systemctl restart elasticsearch.service

接下來在grafana的管理介面上加入 elasticsearch 的datasource
紅色框請特別注意

























接下來就可以新增一個 dashboard 並在dashboard加入panel
選擇剛建立的datasource
預設就會顯示所有的筆數
如果需要挑選資料
可以把條件下在 Query
條件的下法跟 graylog 完全一樣
可以在 Metric 選擇要顯示count 最大 最小 或 加總 等等
Alias 設定圖上的圖線說明












2019/05/08

之前有說到新版的proxmox多了凍結的功能
但guest的記憶体如果太大 會開不起來
而且在開不起來的同時
會殘留一個state-suspend的檔
而且沒有辦法從網頁介面去砍











查了一下要下指令

zfs list

rpool/data/vm-121-state-suspend-2019-04-30


pvesm free local-zfs:vm-121-state-suspend-2019-04-30

檔案就刪除了

http://adminkk.blogspot.com/2019/04/proxmox-5.html

https://forum.proxmox.com/threads/how-to-remove-image-file-from-local-lvm.47686/

2019/05/03

最近有個朋友問我一個問題
說他的librenms要加service check的時候沒有type可以使用




















在我安裝的版本並沒有碰到這個問題
於是查了一下資料
發現librenms是使用nagios plugins來check service
先把nagios-plugins裝起來

yum install -y nagios-plugins nagios-plugins-http
以上只有安裝 http的check
如果還有需要其他的service check
再安裝其他的service plugins
yum search nagios-plugins 可以找到其他的service plugin check

接下來再
/opt/librenms/config.php 加入以下

$config['nagios_plugins']   = "/usr/lib64/nagios/plugins";

之後再service的type就可以看到已經加入的 nagios plugin check了

https://docs.librenms.org/Extensions/Services/
https://raymii.org/s/tutorials/Service_checks_in_LibreNMS_nagios_plugins.html

2019/05/02

ocs inventory升到 2.6 了
之前跳過 2.5版的原因是php 5.5
想說再來裝看看
安裝過程還ok
反正就需要的rpm一個一個補
裝完後client跑agent軟体的時候資料沒進來
出現

[Wed May 01 18:08:58.064506 2019] [perl:error] [pid 565] [client 192.168.12.94:57089] Can't call method "rollback" on an undefined value at /usr/local/share/perl5/Apache/Ocsinventory/Server/System.pm line 282.

根据以往的經驗是mysql config的問題
查了一下

dbconfig.inc.php
z-ocsinventory-server.conf

發現安裝時會建立ocs這個db
可是
z-ocsinventory-server.conf
預設的設定db是ocsweb
這個要修正

再來又出現跟之前 2.5版一樣的問題

[Thu May 02 08:35:08.671848 2019] [:error] [pid 573] [client 192.168.12.94:57849] PHP Fatal error:  Can't use method return value in write context in /usr/share/ocsinventory-reports/ocsreports/require/search/TranslationSearch.php on line 237, referer: http://1.2.3.4/ocsreports/index.php?function=visu_search

一樣還是需要php 5.5

redhat到底什麼時候才要升

到目前還是不想轉到ubuntu去