ابتدا دانلود و نصب JDK
سپس متغیر JAVA_HOME رو در Environment Variables حتما به صورت System Variable تعریف کرده و مقدار آن را مسیر نصب java تنظیم کنید. مثلا :
C:\Program Files\Java\jdk-16.0.1
بعد دانلود در مسیری دلخواه از حالت فشرده درآورده ، وارد پوشه config شده و به انتهای فایل elasticsearch.yml این تنظیمات را اضافه کنید
node.name: master
node.master: true
network.host: 0.0.0.0 # دسترسی از بیرون
cluster.initial_master_nodes: ["master"]
xpack.license.self_generated.type: basic
البته برای تمیزی فایل تنظیمات ، می توان موارد را یافته ، از حالت comment درآورده و تغییر دهید.
حال وارد پوشه bin شده و cmd.exe را در همین مسیر اجرا و دستور زیر را اجرا کنید
.\elasticsearch-service.bat install “<service name>”
سپس دستور زیر را اجرا کنید
.\elasticsearch-service.bat manager “<service name>”
داخل پنجرهی باز شده، وارد تب Java بشید و مطمئن شوید که java.io.tmpdir دارای مقدار هست
در صورتی که این مقدار به طور کلی وجود نداشت یا خالی بود، با مسیر دلخواه ایجادش کنید
-Djava.io.tmpdir=C:\elasticTemp
حال می توانید سرویس ویندوزی Elasticsearch را از Services.msc مشاهده ، Service Type آن را از Manual به Automatic تنظیم و سپس Run کنید.
بعد چند لحظه که Elasticsearch بالا آمد ، روی آدرس http://localhost:9200/ صفحه زیر قابل مشاهده هست
در مسیری دلخواه از حالت فشرده درآورده ، وارد پوشه config شده و برای اینکه از بیرون ماشین یا سرور هم بتوانیم به kibana دسترسی داشته باشیم ، تنظیم زیر را به انتهای فایل kibana.yml اضافه کنید
server.host: "0.0.0.0"
اگر Elasticsearch را در سرور دیگری نصب کرده اید ، عبارت elasticsearch.hosts را با آدرس سرور Elasticsearch مقداردهی کنید
برای نصب Kibana به عنوان سرویس، لازمه از ابراز NSSM استفاده کنیم
بعد از دانلود و اکسترکت NSSM، وارد پوشهای که داخل آن فایل nssm.exe وجود داره بشوید و به روش گفته شده در بالا، PowerShell یا Command Prompt رو اجرا کنید؛ بعد، این دستور رو وارد کنید
.\nssm install kibana
مقدار Path را با مسیر فایل kibana.bat ، از پوشه ی kibanaیی که قبلا اکسترکت کرده اید پر کنید.
سپس وارد سربرگ Dependencies شده و نام سرویس ویندوزی Elastic search یی که قبلا ساخته اید را بنویسید
اگر نام سرویس ویندوزی Elasticsearch را فراموش کرده اید ، روی سرویس مزبور کلیک راست کرده ، در Properties ، مقدار Service name را ببینید
با این کار تا زمانی که Elastic search بالا نیامده، Kibana اجرا نشود و اگر Elastic search متوقف شد، Kibana هم متوقف شود.
سپس وارد سربرگ I/O شده و آدرس فایلهای Log را به مسیری دلخواه مقداردهی کنید
در آخرین گام ، دکمه Install service را کلیک کنید
اکنون در services.msc می توانید سرویس مورد نظر را ببینید.
بعد از اجرای سرویس ویندوزی kibana و گذشت زمانی کوتاه [که بستگی به سیستم دارد] ، روی آدرس http://localhost:5601 ، kibana قابل مشاهده است
3 – نصب LogStash به عنوان سرویس ویندوزی
می خواهیم لاگ هایی که سمت Mongodb درج می شوند را توسط Logstash به Elasticsearch بفرستیم تا index شوند.
دانلود درایور جاوایی Mongodb از صفحه ی زیر
https://dbschema.com/jdbc-driver/MongoDb.html
تنظیمات در فایل config
فایلی با نامی دلخواه مانند logstash.conf ایجاد کرده و با تنظیمات زیر مقداردهی می کنیم :
input { jdbc {
jdbc_driver_library => "F:/.../MongoDbJdbcDriver/mongojdbc3.1.jar"
jdbc_driver_class => "com.dbschema.MongoJdbcDriver"
jdbc_connection_string => "jdbc:mongodb://<IP>/<MongoDBName>"
jdbc_validate_connection => true
jdbc_user => ""
record_last_run => true
last_run_metadata_path => "F:/.../path/.stored_sql_last_value_file"
schedule => "*/10 * * * * *"
clean_run => false
use_column_value => true
tracking_column => "TStamp"
tracking_column_type => "numeric"
sql_log_level => "debug"
statement => "
var lastValue = :sql_last_value
db.TestTbl2.aggregate([
{
$project :
{
'_id': false,
'Title': true,
'CreateDate': true,
'TStamp': {
$subtract: [ '$CreateDate', new Date('1970-01-01') ]
}
}
},
{
$match: {
'TStamp': {$gt: lastValue}
}
},
{ $limit: 1 },
{ $sort:{ 'TStamp': 1 } }
]); "
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "hbindextest"
doc_as_upsert => true
document_id => "%{[document][TStamp]}"
}
stdout { codec => rubydebug }
}
jdbc_driver_library : مسیر درایور JDBC مربوط به MongoDB
jdbc_connection_string : رشته اتصال به MongoDB
last_run_metadata_path : مسیر فایلی که حاوی آخرین مقدار tracking_column ایندکس شده
use_column_value : آیا tracking_column استفاده شود؟
tracking_column :
ستون سمت MongoDB که می خوایم با مقدار آن متوجه شویم تا کجا ایندکس شده.
ما برای آزمایش ، در کد واکشی ، ستون TStamp که سمت MongoDB وجود نداشت را ساختیم و از آن برای ردگیری استفاده کردیم.
اگر ستون مورد نظر از قبل در MongoDB وجود داشته باشد ، تغییرات زیر را باید انجام داد تا Logstash بتواند آن ستون را یافته و از مقدار آن استفاده کند
به مسیر زیر بروید
F:\...\logstash-7.13.3\vendor\bundle\jruby\2.5.0\gems\logstash-integration-jdbc-5.0.7\lib\logstash\plugin_mixins\jdbc\jdbc.rb : line 236
تابع get_column_value(row) را تغییر دهید
public
def get_column_value(row)
if !row.has_key?(@tracking_column.to_sym)
if !row.dig(:document, @tracking_column).nil?
@sql_last_value = row.dig(:document, @tracking_column)
elsif !@tracking_column_warning_sent
@logger.warn("tracking_column not found in dataset.", :tracking_column => @tracking_column)
@tracking_column_warning_sent = true
end
# If we can't find the tracking column, return the current value in the ivar
@sql_last_value
else
# Otherwise send the updated tracking column
row[@tracking_column.to_sym]
end
end
با این تغییر ستون مورد نطر را در زیر مجموعه document می یابد
tracking_column_type : نوع tracking_column (یا numeric یا timestamp)
از مسیر زیر قابل مشاهده است
F:\...\logstash-7.13.3\vendor\bundle\jruby\2.5.0\gems\logstash-integration-jdbc-5.0.7\lib\logstash\inputs\jdbc.rb : line 174
حال می توان به دو شیوه Logstash را اجرا کرد :
اجرای Logstash از طریق cmd
1 - ابتدا Cmd را در این مسیر اجرا
2 - و دستور زیر را وارد کنید
F:\...\logstash-7.13.3\bin\logstash -fF:\...\config\logstash.conf
نصب Logstash به عنوان سرویس ویندوزی
1 – اجرای cmd به عنوان Administrator
2 – اجرای دستور زیر
F:\...\nssm-2.24\win64\nssm.exe install <logstash service name> "F:\...\logstash-7.13.3\bin\logstash.bat" "-f F:\...\config\logstash.conf"
برای شروع
F:\...\nssm-2.24\win64\nssm.exe start <logstash service name>
برای خاتمه
F:\...\nssm-2.24\win64\nssm.exe stop <logstash service name>
برای ویرایش
F:\...\nssm-2.24\win64\nssm.exe edit <logstash service name>
برای حذف
F:\...\nssm-2.24\win64\nssm.exe remove <logstash service name>