2015年12月28日 星期一

VMWARE ESXI 匯入 OVF 失敗 : the task was canceled by a user

用ESXI 5.5匯出OVF或OVA後,要重新部署到ESXI主機時,會出現"the task was canceled by a user"的錯誤訊息,然後就中斷部署。

原因是匯出虛擬機時,其光碟機設定,有掛載ISO檔導致。

解決辦法:

1. 修改匯出的 OVF 設定檔

step.1 用 NotePad 編輯 OVF 檔

 

將 cdrom type 從 ISO 改為 atapi

從中找到
<rasd:ResourceSubType>vmware.cdrom.iso</rasd:ResourceSubType>

修改為
<rasd:ResourceSubType>vmware.cdrom.atapi</rasd:ResourceSubType>


若是單一的OVA檔請用7zip或winrar解開 修改 OVF


2.刪除*.rm檔

3.匯入


另一個辦法是將原來掛載的CD裝置掛到新的database store裡
但是相對麻煩就是。



2015年12月14日 星期一

Linux 排程 log 相關 (cron)

crontab :crontab 這個指令所設定的工作將會持續循環的進行,可循環的時間為分鐘、小時、每週、每月或每年等。

主要指令
crontab [-u username] [-l|-e|-r]

選項與參數:
-u :只有 root 才能進行這個任務,亦即幫其他使用者建立/移除 crontab 工作排程;
-e :編輯 crontab 的工作內容
-l :查閱 crontab 的工作內容
-r :移除所有的 crontab 的工作內容,若僅要移除一項,請用 -e 去編輯。

#crontab -e
#會進入vi 編譯畫面讓做排程編譯

#crontab -r
#將該帳號所有排程移除

#crontab -l
#將所有排程清單List出來

Crontab -e 的畫面如下:


 Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed


假設


==============================

crond讀取檔案位置
/var/spool/cron/*    #cron執行讀取位置,若直接改寫則會生效,相對的若語法錯誤則就無法執行。
/etc/cron.d/*          #以時間做為區分,由
/etc/crontab           #同上,但不依USER區分。


/etc/cron.allow       #允許使用者使用cron的清單(白名單)
/etc/cron.deny        #拒絕使用者使用cron的清單(黑名單)
這兩者中,allow 比deny優先。


在伺服器維護日常作業裡常會用到,
Cron服務於每分鐘都會去讀取/etc/crontab 與 /var/spool/cron 的內容

故新增cron指令後並不需要做重啟服務的動作,
cron將會於下個分鐘來臨時自動讀取並依規則執行
crond 的執行程式存放在/usr/bin/crontab 


crond 執行的log完會存放在/var/log/cron 
/var/log/cron 

故可由此確認被執行的排程。
==============
參考來源:鳥哥
http://linux.vbird.org/linux_basic/0430cron.php

2015年12月12日 星期六

Elasticsearch, Logstash, and Kibana 4

==============

Java 1.8+Elasticsearch 2.0+Kibana 4.2.0(失敗)
後降版至Kibana 3 成功
之後再補上筆記
==============




參考網址:
http://www.chenshake.com/centos-install-7-x-elk-elasticsearchlogstashkibana/

https://www.elastic.co/guide/en/logstash/current/plugins-inputs-file.html

https://www.digitalocean.com/community/tutorial_series/centralized-logging-with-logstash-and-kibana-on-centos-7

http://zettadata.blogspot.tw/2014/09/elkelastic-searchlogstashkibanalog.html

http://icodding.blogspot.tw/2015/09/centos-elkelastic-searchlogstashkibana.html?showComment=1446104855572


看了許多文章和測試後目前自己設計的實驗架構如下:

Java 1.8

sudo  yum install java-1.8.0-openjdk httpd unzip


Elasticsearch 2.0

安裝
sudo vi /etc/yum.repos.d/elasticsearch.repo

Java 1.8

yum install java-1.8.0-openjdk httpd unzip

Elastic Search
Logstash

Kibana

https://download.elastic.co/kibana/kibana/kibana-4.2.0-linux-x64.tar.gz



安裝Elastic Search
下載公鑰
rpm --import http://packages.elasticsearch.org/GPG-KEY-elasticsearch

在 /etc/yum.repos.d/ 目錄下新增檔案,例如 elasticsearch.repo,內容如下
vi /etc/yum.repos.d/elasticsearch.repo

[elasticsearch-2.0]
name=Elasticsearch repository for 2.0.x packages
baseurl=http://packages.elasticsearch.org/elasticsearch/1.3/centos
gpgcheck=1
gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch
enabled=1




安裝Elastersearch
yum install elasticsearch

設定Elasticsearch
編輯 /etc/elasticsearch/elasticsearch.yml
sudo vi /etc/elasticsearch/elasticsearch.yml
cluster.name: "LogCluster"
node.name: "LogMaster"
node.master: true
node.data: true

path.conf: /etc/elasticsearch
path.data: /datapool/data1
path.work: /datapool/work
path.logs: /datapool/log

mkdir /datapool
mkdir /datapool/data1
mkdir /datapool/work
mkdir /datapool/log

將服務加入系統
sudo chkconfig --add elasticsearch

啟動服務
sudo /etc/init.d/elasticsearch start

測試啟動是否成功
curl localhost:9200/_nodes/process?pretty



防火牆開啟
sudo firewall-cmd --permanent --zone=public --add-port=80/tcp
sudo firewall-cmd --permanent --zone=public --add-port=5403/tcp
sudo firewall-cmd --permanent --zone=public --add-port=5601/tcp
sudo firewall-cmd --permanent --zone=public --add-port=9200/tcp
sudo firewall-cmd --permanent --zone=public --add-port=9300/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-all


安裝Logstash
安裝金鑰
rpm --import http://packages.elasticsearch.org/GPG-KEY-elasticsearch

在 /etc/yum.repos.d/ 目錄下新增檔案,例如 logstash.repo,內容如下
sudo vi /etc/yum.repos.d/logstash.repo
[logstash-2.0]
name=logstash repository for 2.0.x packages
baseurl=http://packages.elasticsearch.org/logstash/2.0/centos
gpgcheck=1
gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch
enabled=1

安裝Logstash
sudo yum install logstash

配置logstash,如下是Logstash的配置文件
==
sudo vi /etc/logstash/conf.d/logstasg_access.conf
==
sudo vi /etc/logstash/conf.d/01_apache_logstasg_input.conf
input {
file {
path => "/var/log/httpd/access_log"
type => "apache" # a type to identify those logs (will need this later)
}
}

filter {
if [type] == "apache" { # this is where we use the type from the input section
grok {
match => [ "message", "%{COMBINEDAPACHELOG}" ]
}
date {
# Try to pull the timestamp from the 'timestamp' field (parsed above with
# grok). The apache time format looks like: "18/Aug/2011:05:44:34 -0700"
match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
}
if [user-agent] != "-" and [user-agent] != "" {
useragent {
add_tag => [ "UA" ]
source => "user-agent"
}
}
if "UA" in [tags] {
if [device] == "Other" { mutate { remove_field => "device" } }
if [name] == "Other" { mutate { remove_field => "name" } }
if [os] == "Other" { mutate { remove_field => "os" } }
}
}
}


sudo vi /etc/logstash/conf.d/02_apache_logstasg_output.conf

output {
elasticsearch {
host => "lsap.adtc.com.tw"
cluster => "elasticsearch"
node_name => "Elektra Natchios"
}
}

啟動 logstash 服務
cd /opt/logstash/bin/
./logstash

安裝Kibana 4.2.0(結構改變 需再研究)

sudo wget   https://download.elastic.co/kibana/kibana/kibana-4.2.0-linux-x64.tar.gz &&  gunzip kibana-4.2.0-linux-x64.tar.gz && tar -xvf kibana-4.2.0-linux-x64.tar && mv kibana-4.2.0-linux-x64  kibana && sudo mv kibana  /var/www/html/


安裝Kibana 3.1.2
wget  https://download.elasticsearch.org/kibana/kibana/kibana-3.1.2.zip &&  unzip kibana-3.1.2.zip &&  mv kibana-3.1.2  kibana && mv kibana  /var/www/html/


設定apache
vi /etc/httpd/conf/httpd.conf
<VirtualHost *:80>
ServerAdmin edwin.chen@adtc.com.tw
DocumentRoot /var/www/html/kibana
ServerName lsap.adtc.com.tw
ErrorLog logs/kibana.opsnotes.net-error_log
CustomLog logs/kibana.opsnotes.net-access_log common
</VirtualHost>

設定防火牆
#
# 開啟HTTP 80 port
#
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#
# 設定ElasticSearch使用的port 9200-9300
#
iptables -A INPUT -p tcp --dport 9200:9300 -j ACCEPT

重啟 apache 服務
service httpd restart




sudo vim /etc/init.d/logstash

LS_USER=root
LS_GROUP=root

※為讀取LOG需改變權限為root
(應該可以透過SU更改)

==================
20161216 5.Xtest



#===JAVA=====
yum -y install net-tools
yum -y install java-1.8.0-openjdk.x86_64
yum -y install wget vim
echo $JAVA_HOME
/usr/sbin/alternatives --config java
java -version
vim /etc/profile

find /usr/lib/jvm/java-1.x.x-openjdk

export JAVA_HOME="path that you found"
export PATH=$JAVA_HOME/bin:$PATH

vim /root/.bash_profile
echo $JAVA_HOME
#===JAVA=====
#===elasticsearch

vim /etc/hosts
nmtui

wget https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticsearch/2.4.3/elasticsearch-2.4.3.rpm
rpm -ivh elasticsearch-2.1.1.rpm

vim /etc/elasticsearch/elasticsearch.yml
vim  /etc/sysconfig/elasticsearch
vim  /usr/lib/systemd/system/elasticsearch.service
 vim /etc/sysconfig/elasticsearch

firewall-cmd --permanent --add-port={9200/tcp,9300/tcp}
firewall-cmd --reload
sudo systemctl start elasticsearch.service
sudo systemctl status elasticsearch.service



cd /usr/share/elasticsearch/bin
./plugin install lmenezes/elasticsearch-kopf

hostname -F /etc/hostname

#kibana-5.x

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

echo "[kibana-5.x]
name=Kibana repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md" | tee /etc/yum.repos.d/kibana.repo

yum install -y kibana

firewall-cmd --permanent --add-port=5601/tcp
firewall-cmd --reload
systemctl daemon-reload
systemctl enable kibana.service
systemctl start kibana.service


vim config/kibana.yml
elasticsearch.url

Cent / Redhat Dns hosts 修改

更改CentOS /Redhat主機名稱步驟
假設此主機為mydns.net下的一部電腦,需命名為dns,
那麼FQDN(長主機名稱)為dns.mydns.net,
且有一個對外固定IP為140.116.86.xxx
則修改步驟如下
1.開啟終端機
2.執行 hostname確認目前主機名稱
   例如:localhost.localdomain
3.使用系統管理者權限備份 /etc/sysconfig/network 檔案
4.使用系統管理者權限,編輯/etc/sysconfig/network檔案
   假設原始內容為:
    NETWORKING=yes
    HOSTNAME=localhost.localdomain
   將其修改如下後存檔
    NETWORKING=yes
    HOSTNAME=dns.mydns.net
5.使用系統管理者權限備份/etc/hosts檔案

PS.於CentOS內的hosts 檔案方式並非系統要求的格式
但至CentOS7時也並未修改,其表示格式如下:

IP   FQDN   hostname


6.使用系統管理者權限,編輯/etc/hosts檔案
   假設原始內容為:
   127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
   ::1           localhost localhost.localdomain localhost6 localhost6.localdomain6
   將其修改如下後存檔

   127.0.0.1 dns.mypractice.net dns 
   ::1           dns.mypractice.net dns 
   60.250.oo.xx dns.mypractice.net dns
7.重開機
8.執行指令測試設定結果,檢查是否設定正確
    i.執行hostname(或cat /proc/sys/kernal/hostname)
      執行結果--> dns.mypractice.net
    ii.執行hostname -f
      執行結果-->dns.mypractice.net
    iii.執行hostname -i
      執行結果-->127.0.0.1 127.0.0.1 60.250.oo.xx
    iv.執行hostname -I
      執行結果-->60.250.oo.xx
後記:
若透過(hostname dns.mypractice.net)指令更改,
並重啟動網路(/etc/init.d/network/restart  或 service network restart)後,
只要重開機,
設定的新主機名稱就會還原為設定前的主機名稱,
若要永久更改主機名稱,請依照上列步驟更改

硬碟空間不足(inode)

前陣子遇到個很有趣的問題

硬碟空間足夠卻顯示硬碟空間不足無法寫入的情況

使用

df -h

發現硬碟空間容量都還有40%以上,但是為什麼會顯示這情形呢?

此時下

df -i

會發現裡面 inode 使用率 100%

兇手就是你呀....

原因是有許多瑣碎零散的檔案存放在硬碟中
故導致I node 被占用完

此時


方法有二

一、增加Inode 空間

二、查詢系統Inode占用空間清除不必要的零碎檔案

可透過

du -sm /*

查看占用的空間大小會以M為單位顯示於表頭,以下這組亦然。

du --max -depth=1 -B M|sort -g